package leetcode.editor.cn;

import java.util.*;
import leetcode.editor.common.*;

public class MoveZeroes {

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public void moveZeroes(int[] nums) {
            if(nums==null||nums.length<1){
                return;
            }


            // 先将 0 移除，并返回 移出后的数组长度
            int p = removeDuplicates(nums,0);

            // 移出 几个 零 ，就补几个0
            for (int i = p; i <= nums.length-1; i++){
                nums[i] = 0;
            }






        }



        // 使用双指针 技巧，将相同的 val 移除
        // 当 nums[i] ！= val 时，将 nums[fast] 赋值 nums[slow] ，然后 slow++
        // 当 nums[i] == val 时，fast++
        // 返回 slow 的长度
        int removeDuplicates(int[] nums,int val) {
          int slow =0;
          int fast =0;

          while (fast <= nums.length-1){
              if(nums[fast]!=val){
                  nums[slow] = nums[fast];
                  slow++;
              }
              fast++;
          }
          return slow;
        }

    }
    //leetcode submit region end(Prohibit modification and deletion)

    
    public static void main(String[] args) {
        Solution solution = new MoveZeroes().new Solution();
        // put your test code here
        
    }
}
